class Img64 {
    constructor(obj, maxSize = 10 * 1024 * 1024) {
        this.img = obj.img;
        this.maxSize = maxSize;
        this.buffer = null;
    }

    check() {
        // 图片判空
        let img = this.img;
        if (!img) {
            return { success: false, msg: '没有接收到图片' };
        }
        // 判断图片格式是否为 base64
        if (!img.startsWith('data:image')) {
            return { success: false, msg: '图片格式错误, 应是base64编码的dataURL数据' };
        }
        // 提取 base64 数据部分 再次判空
        let base64Data = img.split(',')[1];
        if (!base64Data) {
            return { success: false, msg: '图片格式错误, 应是base64数据为空' };
        }
        // 将 base64 数据转换为 Buffer
        let buffer = Buffer.from(base64Data, 'base64');
        // 判断 img 这个base64字符串占用的字节是否超过 10M, 超过直接返回失败
        if (buffer.length > this.maxSize) {
            return { success: false, msg: "图片过大，请重新上传" };
        }
        // 将 buffer 赋值给 this.buffer
        this.buffer = buffer;
        return { success: true };
    }
}

module.exports = Img64;